package com.ccnf.core.bean;

import lombok.Data;

/**
 * 响应回页面的数据统一格式
 */
@Data
public class ResponseWithPage extends ResponseWithData {
    /**
     * 当前第几页
     */
    private Integer pageNum;
    /**
     * 每页显示多少条数据
     */
    private Integer pageSize;

    /**
     * 数据的总数
     */
    private Long total;

    /**
     * @param data 数据列表
     * @param pageNum 当前第几页
     * @param pageSize 每页显示多少条数据
     */
    protected ResponseWithPage(Object data, Integer pageNum, Integer pageSize) {
        super(data);
        this.pageNum = pageNum;
        this.pageSize = pageSize;
    }

    /**
     * @param data 数据列表
     * @param pageNum 当前第几页
     * @param pageSize 每页显示多少条数据
     * @param total 数据的总数
     */
    protected ResponseWithPage(Object data, Integer pageNum, Integer pageSize, Long total) {
        super(data);
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.total = total;
    }

    /**
     * @param data 数据列表
     * @param pageNum 当前第几页
     * @param pageSize 每页显示多少条数据
     * @param total 数据的总数
     */
    protected ResponseWithPage(String message, Object data, Integer pageNum, Integer pageSize, Long total) {
        super(message, data);
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.total = total;
    }

    /**
     * 请求成功时返回的数据
     * @param data 返回的数据列表
     * @param pageNum 当前第几页
     * @param pageSize 每页显示多少条数据
     * @param total 数据的总数
     * @return 响应的实体
     */
    public static ResponseWithPage success(Object data, Integer pageNum, Integer pageSize, Long total) {
        return new ResponseWithPage(data, pageNum, pageSize, total);
    }

    /**
     * 请求成功时返回的数据，并可自定义请求成功时返回的消息内容
     * @param data 返回的数据列表
     * @param pageNum 当前第几页
     * @param pageSize 每页显示多少条数据
     * @return 响应的实体
     */
    public static ResponseWithPage success(Object data, Integer pageNum, Integer pageSize) {
        return new ResponseWithPage(data, pageNum, pageSize);
    }
}
